function Start-InstallPreperation {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)][Parameters]$Parameters
    )

    # Get client IP address.
    $Parameters.LSInsight.ClientIPAddress = Get-ClientIPAddress

    # Get ARM template folder.
    $ArmTemplateFolder = Get-ArmTemplateFolder

    # Create project folder if needed.
    if (!$Parameters.LSInsight.ProjectFolder) {
        $Parameters.LSInsight.ProjectFolder = New-ProjectFolder
    }

    # Copy Arm template files into the project folder.
    Move-ArmFilesToProjectFolder -ArmTemplateFolder $ArmTemplateFolder -ProjectFolder $Parameters.LSInsight.ProjectFolder

    # Get path to Arm_template.
    $Parameters.LSInsight.ArmTemplateFile = Get-ArmTemplateFile -Folder $Parameters.LSInsight.ProjectFolder

    # Get path to Arm_template_parameter.
    $Parameters.LSInsight.ArmTemplateParameterFile = Get-ArmTemplateParameterFile -Folder $Parameters.LSInsight.ProjectFolder
}